//using System;
//using System.IO;
//using System.Collections;
//using System.Xml.Serialization;
//using DCRF.Common.Kernel.Helper;
//using DCRF.Common.Kernel.Core;
//using DCRF.Common.Core;
//using DCRF.Common.Primitive;
//using DCRF.Common.Interface;

//namespace DCRF.Common.Kernel.Helper
//{
//    [Serializable]
//    [XmlRoot("Block")]
//    /// <summary>
//    /// Contains information about a Block that will be stored in DCRF repository config file to be used by SimpleBlockBroker
//    /// </summary>	
//    public class BlockDescriptor
//    {
//        public BlockDescriptor()
//        {
//        }


//        #region Folders and Paths
//        /// <summary>
//        /// Returns path relative to repository folder, of the folder in which Blocks of this product are placed
//        /// </summary>
//        public string SharedProductFolder
//        {
//            get
//            {
//                string p = Repository.Folder;

//                p = Path.Combine(p, ID.Product);
//                return p;
//            }
//        }

//        /// <summary>
//        /// Returns path (relative to shared product folder) of shared folder of this Block.
//        /// Shared folder is shared among different versions of a Block
//        /// </summary>
//        public string SharedFolder
//        {
//            get
//            {
//                string p = SharedProductFolder;

//                p = Path.Combine(p, ID.Identifier);
//                return p;
//            }
//        }

//        /// <summary>
//        /// Absolute path of assembly file containing the block
//        /// </summary>
//        public string AssemblyFilePath
//        {
//            get
//            {
//                return Path.Combine(Folder, MainAssembly);
//            }
//        }

//        /// <summary>
//        /// Returns absolte path of the folder that contins the Block with specified version
//        /// </summary>
//        public string Folder
//        {
//            get
//            {
//                return Path.Combine(SharedFolder, this.ID.BlockVersion.ToString());
//            }
//        }

//        #endregion

//        /// <summary>
//        /// Copy data from given block's descriptor
//        /// </summary>
//        /// <param name="Block"></param>
//        public void InitFrom(IBlock Block)
//        {
//            Info.InitFrom(Block.BlockInfo);
//        }

//        [XmlIgnore]
//        public Repository Repository;


//        /// <summary>
//        /// Name of a .NET dll or a COM dll file which contains the Block main entry point
//        /// </summary>
//        public string MainAssembly = "";

//        /// <summary>
//        /// list of files which are not assembly main file but are needed (resources, xml, ...)
//        /// </summary>
//        public string[] SideFiles = null;

//        /// <summary>
//        /// For .NET Blocks this is the name of the class we shold call 
//        /// for COM Blocks this will be CLSID
//        /// </summary>
//        public string MainClass = "";


//        /// <summary>
//        /// this will be filled by rep admin and will be used to update the Block
//        /// We need the path to original folder of the Block when performing update from repAdmin
//        /// </summary>
//        public string OriginalFolder = "";

//        /// <summary>
//        /// true if Block can be called from app or other Blocks
//        /// </summary>
//        public bool Enabled = true;

//        #region Runtime Information - Filled at runtime - not stored in config file

//        /// <summary>
//        /// this class contains information about the Block (exact info which is stored in IBlock)
//        /// </summary>
//        private BlockInfo Info = new BlockInfo();

//        public BlockInfo BlockInfo
//        {
//            get
//            {
//                return Info;
//            }
//            set
//            {
//                Info = value;
//            }
//        }
        
//        /// <summary>
//        /// Company that has created the component
//        /// </summary>
//        [XmlIgnore]
//        public string Company
//        {
//            get { return Info.Company; }
//            set { Info.Company = value; }
//        }

//        /// <summary>
//        /// A unique ID for this component
//        /// </summary>
//        [XmlIgnore]
//        public CID ID
//        {
//            get { return Info.BlockID; }
//            set { Info.BlockID = value; }
//        }

//        /// <summary>
//        /// A friendly name for the component
//        /// </summary>
//        [XmlIgnore]
//        public string FriendlyName
//        {
//            get { return Info.FriendlyName; }
//            set { Info.FriendlyName = value; }
//        }


//        /// <summary>
//        /// Release date for this component
//        /// </summary>
//        [XmlIgnore]
//        public DateTime ReleaseDate
//        {
//            get { return Info.ReleaseDate; }
//            set { Info.ReleaseDate = value; }
//        }


//        /// <summary>
//        /// Some comments and description about this component
//        /// </summary>
//        [XmlIgnore]
//        public string Comments
//        {
//            get { return Info.Comments; }
//            set { Info.Comments = value; }
//        }
//        #endregion
//    }
//}
